package com.nageoffer.shortlink.project.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nageoffer.shortlink.project.dao.entity.LinkOsStatsDO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkGroupStatsReqDTO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkStatsReqDTO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

@Mapper
public interface LinkOsStatsMapper extends BaseMapper<LinkOsStatsDO> {
    /**
     * 记录地区访问监控数据
     *
     * @param linkOsStatsDO
     */
    @Insert("""
                INSERT INTO t_link_os_stats (
                    full_short_url,
                    date,
                    cnt,
                    os,
                    create_time,
                    update_time,
                    del_flag
                ) VALUES (
                    #{linkOsStats.fullShortUrl},
                    #{linkOsStats.date},
                    #{linkOsStats.cnt},
                    #{linkOsStats.os},
                    NOW(),
                    NOW(),
                    0
                ) ON DUPLICATE KEY UPDATE
                    cnt = cnt + #{linkOsStats.cnt},
                    update_time = NOW()
            """)
    void linkOsStats(@Param("linkOsStats") LinkOsStatsDO linkOsStatsDO);

    /**
     * 操作系统访问详情
     *
     * @param requestParam
     * @return
     */
    List<HashMap<String, Object>> listOsStatsByShortLink(@Param("param") ShortLinkStatsReqDTO requestParam);

    /**
     * 根据分组获取指定日期内操作系统监控数据
     *
     * @param requestParam
     * @return
     */
    List<HashMap<String, Object>> listOsStatsByGroup(@Param("param") ShortLinkGroupStatsReqDTO requestParam);

}
